Introdução ao Processamento de Linguagem Natural

Processo Seletivo: Docente Pós-graduação CDML

Carolina Musso

Ceub

Estrutura da aula

  • Objetivo
  • Materiais utilizados
  • Introdução teórica
  • Regex

Objetivo

  • Introduzir os principais conceitos de PLN para iniciar o desenvolver habilidades e competências para trabalhar com dados não estruturados.

  • Entender a importância e áreas de aplicação do PLN.

  • Entender o uso de Expressões Regulares e iniciar análises simples dentro desse tema.

Materiais

Introdução

PLN: Uma área da mineração de texto.

  • Interdiciplinar: linguística, ciência da computação e inteligência artificial de modo a intermediar a interação humano-computador
  • Técnica de IA para compreender dados não estruturdos
  • Dá suporte para mineração de dados
  • Alto valor comercial e social: mais oportuno

Introdução

  • Mineração de dados lida com dados estruturados - dados altamente formatados, como em bancos de dados.
  • A mineração de texto lida também com dados textuais não estruturados - texto que não é predefinido ou organizado de nenhuma forma, como em feeds de mídia social.
  • Historicamente: Igreja católica no déculo XVII. Formalmente 1980. Mais técnicas sendo desenvolvidas até hoje.
  • Fortmatos semi-estruturados: Markdown, LateX, YAML, BibTex

Métodos, técnicas e áreas

De modo geral: Extração, Recuperação de Informação, Categorização e Clustering, Visualização…

  • Detecção de Spam, PoS-Tagging, Reconhecimento de Entidade, Tesaurus, Tokenização

  • Desambiguação, Parse Semântico, Análise de Sentimentos, Modelagem de Tópicos, Recuperação da Informação

  • Geração de Texto, Sumarização Automática, Resposta a perguntas, Interfaces conversaciones

Exemplos

Filósofos da ciência na Sociologia

Exemplos

Tendência de termos chave da Sociologia

Exemplos

Coocorrência de palavras

Exemplos

Mudança de significado de palavras

Exemplos

Categorização e visualização

Exemplos

Vigilância em saúde baseada em eventos e rumores

VBE: EIOS - Ferramenta oficial da OMS

https://www.who.int/initiatives/eios

Terminologias importantes

  • Tokenização: dividir sequências mais longas
  • Corpus ou Corpora: Uma grande coleção estruturada de textos é conhecida como corpus (plural corpora)
  • Stemming: é um processo para eliminar afixos e obter uma raiz de palavra ou palavra raiz
  • Lematização: Leva em consideração a análise morfológica das palavras
  • Stop Words: palavras com pouco significado e muito frequentes

Regex (Regular Expressions)

Nada mais que uma normalização

  • Formatos mais padronizados: expressões regulares, ou “regex”
  • A normalização de texto e a limpeza dos dados podem tomar a maior parte do tempo em um projeto.
  • Algumas pessoas, ao se defrontarem com um problema, pensam “Acho que vou usar expressões regulares”. Agora elas tem dois problemas.

Parâmetros das Regex

Âncoras

Parâmetros das Regex

Operadores

Parâmetros das Regex

Quantificadores

Pacote stringR

Exemplo no R

library(tidyverse)
banana_vec <- c("banana", "bananas", "bananal", "abanar", "bananeira", "bandolim")

str_detect(banana_vec, "^ban")
[1]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE
str_extract_all(banana_vec, "^ban.*") |> unlist()
[1] "banana"    "bananas"   "bananal"   "bananeira" "bandolim" 
str_replace(banana_vec, "^ban", "BAN") |> unlist()
[1] "BANana"    "BANanas"   "BANanal"   "abanar"    "BANaneira" "BANdolim" 

Prática

datasus <- rio::import("https://d26692udehoye.cloudfront.net/SRAG/2019/INFLUD19.csv")

datasus %>% 
  select(OUT_ANTIV) %>% 
  filter(OUT_ANTIV!="") %>% 
  head(50)
        OUT_ANTIV
1         tamiflu
2        tamiflur
3         tamiflu
4         TAMIFLU
5         tamiflu
6         tamiflu
7         tamiflu
8  claritromicina
9     azitomicina
10   azitromicina
11        tamiflu
12 claritromicina
13        TAMIFLU
14       clavulin
15 claritromicina
16        TAMIFLU
17        tamiflu
18        tamiflu
19 claritromicina
20      aciclovir
21       tamiflur
22       tamiflur
23        TAMIFLU
24        TAMIFLU
25        tamiflu
26        TAMIFLU
27        TAMIFLU
28 claritromicina
29        TAMIFLU
30        tamiflu
31        tamiflu
32   TAMIFLU 75MG
33        TAMIFLU
34        tamiflu
35        TAMIFLU
36 TANIFLUR 75 MG
37       tamiflur
38        TAMIFLU
39        tamiflu
40        tamiflu
41        tamiflu
42       tamiflur
43        tamiflu
44        tamiflu
45   azitromicina
46        TAMIFLU
47        TAMIFLU
48 CLARITROMICINA
49   AZITROMICINA
50        tamiflu

Prática

datasus %>% 
  mutate(OUT_ANTIV=str_to_lower(OUT_ANTIV)) %>% 
  filter(str_detect(OUT_ANTIV, "flu"))%>% 
  select(OUT_ANTIV) %>% 
  head(50)
        OUT_ANTIV
1         tamiflu
2        tamiflur
3         tamiflu
4         tamiflu
5         tamiflu
6         tamiflu
7         tamiflu
8         tamiflu
9         tamiflu
10        tamiflu
11        tamiflu
12        tamiflu
13       tamiflur
14       tamiflur
15        tamiflu
16        tamiflu
17        tamiflu
18        tamiflu
19        tamiflu
20        tamiflu
21        tamiflu
22        tamiflu
23   tamiflu 75mg
24        tamiflu
25        tamiflu
26        tamiflu
27 taniflur 75 mg
28       tamiflur
29        tamiflu
30        tamiflu
31        tamiflu
32        tamiflu
33       tamiflur
34        tamiflu
35        tamiflu
36        tamiflu
37        tamiflu
38        tamiflu
39        tamiflu
40        tamiflu
41        tamiflu
42        tamiflu
43        tamiflu
44        tamiflu
45        tamiflu
46        tamiflu
47       tamiflur
48        tamiflu
49        tamiflu
50        tamiflu

Agora faça você mesmo!